package com.system.task;

import java.util.Date;
import java.util.List;
import java.util.TimerTask;

import org.apache.log4j.Logger;

import com.frame.ar.db.QueryParamsAnd;
import com.frame.config.SystemParamsConfig;
import com.frame.config.SystemParamsConfig.ManagerParam;
import com.system.model.User;

/*******************************************
 * 作用描述：定时检查数据表中被锁定的用户，自定解锁功能
 ******************************************* 
 * @author LRC
 * @createDate 2015-9-12
 * @version v1.0
 * @updateRecord 格式：时间，作者，修改说明
 ******************************************* 
 * 
 */
public class ClearLockUserTask extends TimerTask {

	public static final Logger log = Logger.getLogger(ClearLockUserTask.class);
	
	@Override
	public void run() {
		try {
			//xlog.info("ClearLockUserTask run start...");
			// 查询数据库中已经锁定的账号
			List<User> users = User.dao.findByQueryParams(new QueryParamsAnd().put("status", "=", 2));
			// 获取的当前时间
			Long now = System.currentTimeMillis();
			// 获取锁定时间参数
			ManagerParam p = SystemParamsConfig.getInstance().getManagerParam();
			// 遍历检索自动解锁
			for (User u : users) {
				// 获取用户锁定时间
				Date lockedTime = u.getDate("lockedTime");
				Long lastLockingTime = lockedTime.getTime() + p.lockingTime;
				if (lastLockingTime <= now) {
					// 解锁
					u.set("status", 1).set("lockedTime", null).set("loginFailedNum", 0);
					u.update();
					// 从缓存中取出锁定用户
					User.dao.unLocked(u.getStr("userCode"));
				}
			}
			//log.info("ClearLockUserTask run end...");
		} catch (Exception e) {
			log.error("ClearLockUserTask run error : " + e.getMessage());
		}
	}

}
